using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;

namespace LiJ.Http.Mos
{
	/// <summary>
	/// 请求实体
	/// </summary>
	public class LHttpRequest
	{
		/// <summary>
		/// 请求地址信息
		/// </summary>
		public Uri Uri
		{
			get;
			set;
		}

		/// <summary>
		///  如果此值设置，则忽略 Uri 值
		/// </summary>
		public string AddressUrl
		{
			get;
			set;
		}

		/// <summary>
		/// 请求方式
		/// </summary>
		public HttpMothed HttpMothed
		{
			get;
			set;
		}

		/// <summary>
		///   reqMessage 设置方法
		///    如果当前的设置不能满足需求，可以通过这里再次设置
		/// </summary>
		public Action<HttpRequestMessage> RequestSet
		{
			get;
			set;
		}

		/// <summary>
		/// 文件参数列表
		/// </summary>
		public List<FileParameter> FileParameters
		{
			get;
			set;
		}

		/// <summary>
		/// 是否存在文件
		/// </summary>
		public bool HasFile => FileParameters.Any();

	    /// <summary>
		/// 非文件参数列表
		/// </summary>
		public List<FormParameter> FormParameters
		{
			get;
			set;
		}

		/// <summary>
		/// 自定义内容实体
		/// eg:当上传文件时，无法自定义内容
		/// </summary>
		public string CustomBody
		{
			get;
			set;
		}

		/// <summary>
		///    超时时间（毫秒）
		/// </summary>
		public int TimeOutMilSeconds
		{
			get;
			set;
		}

		public LHttpRequest()
		{
			FormParameters = new List<FormParameter>();
			FileParameters = new List<FileParameter>();
		}
	}
}
